`
https://leetcode.cn/problems/string-to-integer-atoi/
`

/**
 * @param {string} s
 * @return {number}
 */
var myAtoi = function (s) {
  const n = s.length
  let res = 0
  let i = 0
  // 记录符号位
  let sign = 1
  // 跳过前导空格
  while (i < s.length && s[i] === ' ') {
    i++
  }
  if (i === n) {
    return 0
  }

  // 记录符号位
  if (s[i] === '-') {
    sign = -1
    i++
  } else if (s[i] === '+') {
    i++
  }
  if (i === n) {
    return 0
  }

  // 记录数值
  while (i < n && s.charCodeAt(i) >= '0'.charCodeAt(0) && s.charCodeAt(i) <= '9'.charCodeAt(0)) {
    res = res * 10 + (s.charCodeAt(i) - '0'.charCodeAt(0))
    if (res > 2147483647) {
      break
    }
    i++
  }

  // 如果溢出，强转成 int 就会和真实值不同
  if (res > 2147483647) {
    return sign === 1 ? 2147483647 : -2147483648; // Integer.MAX_VALUE : Integer.MIN_VALUE
  }
  return res * sign
};